The present invention relates generally to refreshing displayed data, and more particularly to refreshing data displayed on a page after the data has been changed in the underlying database.
There is an expectation that changes made to a user's data show up in a reasonable amount of time in a displayed web page or other displayed data object. The source of the change may influence what “reasonable” means. For changes made through local activity on their workstation, reasonable may be a few seconds. For changes made through non-local activity, reasonable may be a few seconds or a few minutes. Local activity might include a user changing their own object data on their own client system, e.g., through web pages displayed on the client system, or through newer UI methods such as drag and drop techniques. Non-local activity might include User B changing User A's data using a different client system, or User A's events changing through automated processes such as through workflow processes and/or triggers, or User A's events changing via an API.
If local activity indicates that data for a displayed object has changed, a process is used to cause the object or page to refresh itself. This allows nearly immediate reflection of changes when a user changes their data through local activity, but does not address any of the user change sources.
Current solutions include a data page refreshing itself periodically, e.g., every 15 minutes, by way of sending update requests to the application server. Any change to the data page, either local or non-local, will be reflected in 15 minute intervals. However, there are numerous issues with this approach. For example the page refresh, even at the 15 minute intervals, is expensive and can be difficult to sustain as the number of users scales up (and hence the number of refresh requests hitting the application server). Also, the local activity process is fragile, and only supports one of the potential sources of data changes. Further, a 15 minute interval for refreshes may be too coarse for active use.
One seemingly obvious solution might be to decreases the period in which refresh requests are sent from client systems to the application servers, from 15 minutes to say every minute, or every 30 seconds, etc. However, such a solution becomes untenable as the number of database users, and hence number of refresh requests, increases. The impact on the application servers would inevitably slow down the entire system.
Accordingly, it is desirable to provide systems and methods that overcome the above and other problems.